#include <iostream>
#include <math.h>
using namespace std;


int l2(int x){
	return (int)log2(x);
}


int p2(int a){
	return (int)1<<a;
}

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

int main(){
	int ans=0;
	int n;
	cin>>n;
	int st[n][l2(n)+1];
	int a[n];
	for(int i=0;i<n;i++){
		a[i] = read();
		st[i][0] = a[i];
	}
	for(int i=1;i<=l2(n);i++){
		for(int j=0;j+(1<<i)-1<=n;j++){
			st[j][i] = max(st[j][i-1],st[j+p2(i-1)][i-1]);
		}
	}
	
//	for(int i=0;i<n;i++){
//		for(int j=0;j<=l2(n);j++)
//			cout<<st[i][j]<<" ";
//		cout<<endl;
//	}

	for(int i=0;i<n;i++){
		int k=a[i];
		if(k <= ans)
			continue;
		for(int j=i-k+1;j<=i&&j+a[i]-1<n;j++){
			if(j < 0){
				j = -1;
				continue;
			}
			int l=j,r=j+k-1;
			if(max(st[l][l2(r-l+1)],st[r-p2(l2(r-l+1))+1][l2(r-l+1)]) <= k){
				ans = k;
			}
		}
	}
	
	
	cout<<ans;
	return 0;
}
